Задачи:
Задача 1
Задача 2
Задача 3
Задача 4
Задача 5
Задача 6
Задача 7
Задача 8
Задача 9
Задача 10
Задача 11
Дан массив из 10 целых чисел, заменить в нём все отрицательные числа на равные
им по модулю положительные.
Входные данные:
Первая строка содержит 10 целых чисел ai (0 ≤ ai ≤ 10^9), разделенных пробелами — элементы массива.
Выходные данные:
Выведите получившейся массив.
Пример:
Ввод | Вывод |
0 -1 2 3 -4 -5 6 7 8 -9 | 0 1 2 3 4 5 6 7 8 9 |
В этой задаче мы будем на каждом шаге цикла проверять является ли этот элемент отрицательным, если да, то меняем его знак.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int A[10], i; for (i = 0; i < 10; i++) { scanf("%i", &A[i]); } for (i = 0; i < 10; i++) { if (A[i] < 0) { A[i] = A[i] * (-1); } } for (i = 0; i < 10; i++) { printf("%i ", A[i]); } return 0; }
Дан массив из 10 целых чисел, найти в нём минимальное положительное число, если
положительных чисел нет - вывести -1.
Входные данные:
Первая строка содержит 10 целых чисел ai (-10^3 ≤ ai ≤ 10^3), разделенных пробелами — элементы массива.
Выходные данные:
Вывести ответ на задачу.
Пример:
Ввод | Вывод |
0 -1 2 3 -4 -5 6 7 8 -9 | 2 |
-4 -5 -2 -1 -52 -8 -7 -34 -65 -5 | -1 |
Инцилизировать переменную min можно значением большим, чем максимально возможное вводимое число.
Переменная flag позволяет нам определить есть ли в массиве положительные числа. flag = 1(true), flag = 0 (false).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int A[10], i, flag, min; for (i = 0; i < 10; i++) { scanf("%i", &A[i]); } min = 1001; // стартовое значение flag = 0; // флаг for (i = 0; i < 10; i++) { if (A[i] > 0 && A[i] < min) { // проверяем условия min = A[i]; flag = 1; // меняем значения флага } } if (flag == 0) { printf("-1"); } else { printf("%i", min); } return 0; }
Дан массив из N целых чисел. Нужно посчитать количество элементов, которые строго больше введеного числа M.
Входные данные:
Первая строка содержит два целых числа N (1 ≤ N ≤ 10^3) и M (0 ≤ M ≤ 10^9) - количество элементов массива и число M.
Вторая строка содержит N целых чисел ai (0 ≤ ai ≤ 10^9), разделенных пробелами — элементы массива.
Выходные данные:
Выведите ответ на задачу.
Пример:
Ввод | Вывод |
5 4 7 3 4 1 10 |
2 |
6 9 4 2 15 11 3 25 |
3 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int N, M, A[1000], i; scanf("%i%i", &N, &M); for (i = 0; i < N; i++) { scanf("%i", &A[i]); } int ans = 0; for (i = 0; i < N; i++) { if (A[i] > M) { ans++; } } printf("%i", ans); return 0; }
Дан массив из N целых чисел. Массив является четным, если все его элементы четные.
Входные данные:
Первая строка содержит число N (1 ≤ N ≤ 10^3) - количество элементов массива.
Вторая строка содержит N целых чисел ai (1 ≤ ai ≤ 10^9), разделенных пробелами — элементы массива.
Выходные данные:
Если массив является четным, то выведите YES, иначе NO
Пример:
Ввод | Вывод |
6 3 5 12 7 8 177 |
NO |
4 34 6 12 18 |
YES |
5 4 12 6 3 26 |
NO |
Операция (%) нужна, чтобы вычислить остаток от деления одного числа на другое, в нашем случае элемента массива на 2. Если остаток от деления на 2 равен 0, то число четное. Теперь остается подсчитать количество таких чисел в массиве.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int A[1000], N, i, k; scanf("%i", &N); for (i = 0; i < N; i++) { scanf("%i", &A[i]); } int num = 0; for (i = 0; i < N; i++) { if (A[i] % 2 == 0) { // проверка на четность num++; } } if (num == N) { printf("YES"); } else { printf("NO"); } return 0; }
Дан массив из N целых чисел, нужно посчитать количество элементов, которые больше среднего арифметического всех элементов массива.
Входные данные:
Первая строка содержит число N (1 ≤ N ≤ 10^3) - количество элементов массива.
Вторая строка содержит N целых чисел ai (0 ≤ ai ≤ 10^9), разделенных пробелами — элементы массива.
Выходные данные:
Выведите ответ на задачу.
Пример:
ввод | вывод |
6 3 2 8 1 4 2 |
2 |
5 2 6 4 8 7 |
3 |
Для решения задачи нужно два цикла for. Первый, чтобы посчитать сумму элементов, а второй для подсчета элементов, которые больше ср. арифметического. Чтобы подсчитать ср. арифметическое, нужен тип данных с плавующей запятой - float.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int A[1000], N, i, sum; float ar; scanf("%i", &N); for (i = 0; i < N; i++) { scanf("%i", &A[i]); } sum = 0; // стартовое значение for (i = 0; i < N; i++) { sum = sum + A[i]; } ar = sum / N; // ср. арифметическое int ans = 0; // стартовое значение for (i = 0; i < N; i++) { if (A[i] > ar) { ans++; } } printf("%i", ans); return 0; }
Дан массив из N целых чисел, нужно вывести массив без повторяющихся элементов.
Входные данные:
Первая строка содержит число N (1 ≤ N ≤ 10^3) - количество элементов массива.
Вторая строка содержит N целых чисел ai (0 ≤ ai ≤ 10^9), разделенных пробелами — элементы массива.
Выходные данные:
Выведите получившейся массив.
Пример:
ввод | вывод |
8 3 3 2 8 8 1 4 2 |
3 2 8 1 4 2 |
3 1 1 1 |
1 |
5 7 3 3 3 2 |
7 3 2 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int A[1000], N, i; scanf("%i", &N); for (i = 0; i < N; i++) { scanf("%i", &A[i]); } for (i = 0; i < N - 1; i++) { if (A[i] != A[i + 1]) { // проверка элемента printf("%i ", A[i]); } } printf("%i ", A[i]); // вывод последнего элемента return 0; }
Дан массив из N элементов, нужно вывести количество элементов, которые делятся на M и являются четными.
Входные данные:
Первая строка содержит число N (1 ≤ N ≤ 10^3) - количество элементов массива.
Вторая строка содержит N целых чисел ai (0 ≤ ai ≤ 10^9), разделенных пробелами — элементы массива.
Выходные данные:
Выведите ответ на задачу.
Пример:
ввод | вывод |
7 3 5 3 8 12 154 15 23 |
1 |
4 12 61 60 139 144 |
2 |
Операция (%) нужна, чтобы проверить остаток от деления одного числа на другое.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int N, M, i, ans; int A[1000]; scanf("%i%i", &N, &M); for (i = 0; i < N; i++) { scanf("%i", &A[i]); } ans = 0; // стартовое значение for (i = 0; i < N; i++) { if (A[i] % 2 == 0 && A[i] % M == 0) { ans++; } } printf("%i", ans); return 0; }
Вводят целое положительное число X (1 ≤ X ≤ 10^15), вывести число, составленное из цифр исходного числа, но в обратном порядке.
Пример:
ввод | вывод |
432765 | 567234 |
83014734543 | 34543741038 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int A[16], i, j, R; long long int X; scanf("%lli", &X); i = 0; while (X > 0) { R = X % 10; A[i] = R; X = X / 10; i++; } for (j = 0; j < i; j++) { printf("%i", A[j]); } return 0; }
Дан массив из N элементов. Этот массив разбит на 3 части: от 0 индекса до A, от A + 1
до B и от B + 1 до N - 1, для лучшего понимания смотрите пример. Нужно вывести сумму каждого участка массива.
Входные данные:
Первая строка содержит числа N - количество элементов(N < 1000), A - первая граница(A ≥ 0 и A < B), B - вторая граница(B > A и B < N - 1).
Вторая строка содержит N целых чисел ai (0 ≤ ai ≤ 10^9), разделенных пробелами — элементы массива.
Выходные данные:
Вывести сумму на каждом участке через пробел.
Пример:
ввод | вывод |
6 1 4 21 6 1 8 16 27 |
27 25 27 |
9 2 4 6 21 13 32 17 1 11 24 3 |
40 49 39 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int N, i, sum1, sum2, sum3; int M[1000], A, B; scanf("%i%i%i", &N, &A, &B); for (i = 0; i < N; i++) { scanf("%i", &M[i]); } sum1 = sum2 = sum3 = 0; i = 0; while (i < N) { if (i <= A) { sum1 = sum1 + M[i]; } if (i > A && i <= B) { sum2 = sum2 + M[i]; } if (i > B) { sum3 = sum3 + M[i]; } i++; } printf("%i %i %i", sum1, sum2, sum3); return 0; }
Дано число X, нужно удалить из него k-ую цифру.
Входные данные:
Первая строка содержит два целых числа X (1 ≤ X ≤ 10^18) и k (1 ≤ k ≤ 19) - число и номер цифры, которую нужно удалить.
Выходные данные:
Вывести число без k-ой цифры.
Пример:
ввод | вывод |
143284 4 | 14384 |
947821834 8 | 94782184 |
При данном решении в массив A запишется обратная последовательность цифр числа X. Поэтому вывод числа начинаем в обратном порядке(начиная с A[l - 1] и до A[0]).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { long long X; int i, j, h, k, A[20]; scanf("%lli%i", &X, &k); i = 0; while (X > 0) { h = X % 10; A[i] = h; i++; X = X / 10; } int l = i; // длина массива цифр for (i = l - 1; i >= 0; i--) { if (l - i != k) { printf("%i", A[i]); } } return 0; }
Дан массив из N (1 ≤ N ≤ 1000) целых чисел, нужно передвинуть все элементы массива влево, а первый элемент должен встать на последнее место.
Пример:
ввод | вывод |
5 4 3 12 6 31 |
3 12 6 31 4 |
8 21 4 6 8 34 23 12 43 |
4 6 8 34 23 12 43 21 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int A[1000], i, j, buf, N; scanf("%i", &N); for (i = 0; i < N; i++) { scanf("%i", &A[i]); } buf = A[0]; for (i = 0; i < N - 1; i++) { A[i] = A[i + 1]; } A[N - 1] = buf; for (i = 0; i < N; i++) { printf("%i ", A[i]); } return 0; }
Code.C
© Copyright Павел Калашников 2021
обратная связь code.c04@mail.ru